﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _08接口特点
{
    class Program
    {
        /// <summary>
        /// 接口的特点:
        /// 1. 接口不允许使用任意修饰符默认就是 public
        /// 2. 接口可以继承多个接口
        /// 3. 接口可以有成员属性
        /// 4. 子类继承的父类和接口中的方法重名的时候显示使用接口的方法,并重写
        ///     IFlayable.say(){XXXX;}
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
           IFlyable ifa = new SuperMane();
            ifa.Fly();

            Bird b = new SuperMane();
            b.Fly();

            Console.ReadKey();
        }
    }

    //继承类同时实现接口
    public class SuperMane : Bird ,IFlyable
    {
        

        new public void Fly()
        {
            Console.WriteLine("我是超人,我会飞,来自父类");
        }

        //显示实现接口的同名方法
        void IFlyable.Fly()
        {
            Console.WriteLine("我是超人,我会飞,来自接口");
        }
    }


    public class Bird
    {
        public void Fly()
        {
            Console.WriteLine("我是鸟,我会飞!");
        }
    }

    //默认是public修饰,I开头able结尾
    public interface IFlyable
    {
        //接口的方法不能被 public 修饰,因为它本身就默认是 public 的
        void Fly();

        //不允许有方法体的方法

        //string Name { get; set; }
    }
}
